Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Exceptions
8 Die Funktionsbibliothek
9 Threads und nebenläufige Programmierung
10 Raum und Zeit
11 Datenstrukturen und Algorithmen
12 Dateien und Datenströme
13 Die eXtensible Markup Language (XML)
14 Grafische Oberflächen mit Swing
15 Grafikprogrammierung
16 Das Netz
17 JavaServer Pages und Servlets
18 Verteilte Programmierung mit RMI und Web–Services
19 Applets, Midlets und Sound
20 Datenbankmanagement mit JDBC
21 Reflection und Annotationen
22 Komponenten durch Bohnen
23 Logging und Monitoring
24 Sicherheitskonzepte
25 Java Native Interface (JNI)
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Index

Download:
- ZIP, ca. 12,5 MB
Buch bestellen

Website zum Buch
Weblog des Autors
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel

Java ist auch eine Insel
6., akt. und erw. Aufl., mit DVD
1.454 S., 49,90 Euro
Galileo Computing
ISBN 3-89842-838-9
gp Vorwort
  gp Vorwort zur 5. Auflage
  gp Vorwort zur 6. Auflage

Mancher glaubt schon darum höflich zu sein, weil er sich überhaupt noch der Worte und nicht der Fäuste bedient. – Hebbel

Vorwort

Am 23. Mai 1995 stellten auf der SunWorld in San Francisco der Chef von Suns Science Office, John Gage, und Netscape-Mitbegründer Marc Andreessen die neue Programmiersprache Java und Integration in den Webbrowser Netscape vor. Java stellt uns elegante Programmiermöglichkeiten zur Verfügung, plattformunahängig zu programmieren und objektorientiert unsere Gedanken abzubilden. Die Möglichkeiten der Sprache und Bibliothek sind an sich nichts Neues, aber so gut verpackt und verkauft, dass Java angenehm und flüssig zu programmieren ist. Dieses Tutorial beschäftigt sich in 26 Kapiteln mit Java, den Klassen, der Design-Philosophie und der Programmierung.

Für wen ist das Tutorial?

Die Kapitel dieses Buches sind für Anfänger der Programmiersprache Java wie auch für Fortgeschrittene konzipiert. Kenntnisse in einer strukturierten Programmiersprache wie C, Delphi, Visual Basic und ein Verständnis für objektorientierte Technologien sind hilfreich, da das Buch nicht besonders auf Rechnerarchitektur eingeht oder auf die Frage, was Programmieren ist. Wer also schon in einer beliebigen Sprache programmiert hat, liegt mit diesem Buch genau richtig!

Einige Unterkapitel sind für erfahrene Programmierer oder Informatiker geschrieben. Besonders der Neuling wird an einigen Stellen den sequenziellen Pfad verlassen müssen, da spezielle Kapitel mehr Hintergrundinformationen und Vertrautheit mit Programmiersprachen erfordern. Verweise auf C(++) oder C# dienen aber nicht wesentlich dem Verständnis, sondern nur dem Vergleich.

Was das Tutorial nicht ist

Dieses Buch darf nicht als Programmierbuch für Einsteiger verstanden werden. Wer noch nie programmiert hat und mit dem Wort »Übersetzen« in erster Linie Dolmetschen verbindet, sollte besser ein anderes Tutorial bevorzugen oder parallel lesen. Viele Bereiche aus dem Leben eines Industrieprogrammierers behandelt »die Insel« bis zu einer allgemein verständlichen Tiefe, doch sie ersetzt nicht die »Java Language Specification« (JLS: http://java.sun.com/docs/books/jls/).

Die Java-Technologien sind in den letzten Jahren explodiert, sodass die anfängliche Überschaubarkeit einer starken Spezialisierung gewichen ist. Heute ist es kaum mehr möglich, alles in einem Buch zu behandeln, und das möchte ich mit der Insel auch auf keinen Fall. Ein Buch, das sich speziell mit der grafischen Oberfläche Swing beschäftigt, ist genauso umfangreich wie die jetzige Insel. Nicht anders verhält es sich mit den anderen Spezialthemen wie objektorientierte Analyse/Design, UML, verteilte Programmierung mit CORBA, Enterprise JavaBeans, Datenbankanbindung, OR-Mapping, Web-Services, dynamische Webseiten und viele andere Themen. Hier muss ein Spezialbuch die Wissensneugier befriedigen.

Welche Software wir benutzen

Als Grundlage dient die Java Platform Standard Edition (Java SE). Sie lässt sich über http://java.sun.com/ beziehen. Das Paket besteht im Wesentlichen aus einem Compiler und einer Laufzeitumgebung (Interpreter). Das SDK ist für die Plattformen Windows, Linux und Solaris erhältlich. (Für Apples Mac OS X gibt es die Java-Laufzeitumgebung unter http://www.apple.com/macosx/features/java/.)

Eine grafische Entwicklungsoberfläche (IDE) ist nicht Teil der Java SE. Zwar verlasse ich mich ungern auf einen Hersteller, weil die Hersteller unterschiedliche Entwicklergruppen ansprechen, doch soll in diesem Buch die freie Entwicklungsumgebung Eclipse (http://www.eclipse.org/) Verwendung finden. Die Beispielprogramme lassen sich grundsätzlich mit beliebigen anderen Entwicklungsumgebungen wie NetBeans, JDeveloper, IntelliJ IDEA verarbeiten oder mit einem einfachen ASCII-Texteditor wie Notepad (Windows) oder vi (Unix) eingeben und auf der Kommandozeile übersetzen. Diese Form der Entwicklung ist allerdings nicht mehr zeitgemäß, sodass ein grafischer Kommandozeilen-Aufsatz die Programmerstellung vereinfacht. Für die Entwicklung von Applets ist ein Browser – oder der appletviewer aus dem JDK – wichtig.

Welche Version?

Seit Sun Java als Programmiersprache 1995 mit Version 1.0 vorgestellt hat, drehte sich die Versionsspirale bis Version 6 (gleichbedeutend mit Versionsnummer 1.6). Besonders für Java-Buch-Autoren stellt sich die Frage, auf welcher Java-Version ein Buch aufbauen muss und welche Bibliotheken es beschrieben solle. Ich habe das Problem so gelöst, dass ich immer die Möglichkeiten der neuesten Version beschreibe, was zur Drucklegung die Java SE 6 ist. Für die Didaktik der objektorientierten Programmierung ist die Versionsfrage glücklicherweise unerheblich. Galt vor ein paar Jahren noch 1.4 als Novum, ist heute Java 5 Basis neuer Projekte.

Immer die aktuellste Version zu nutzen, wirft jedoch auch Probleme auf, beispielsweise dann, wenn ein laufendes Projekt unter Java 1.4 entwickelt wird, und sich nicht jedes Beispielprogramm aus dem Buch per Copy&Paste übertragen lässt. (Softwareentwickler konsultieren bei Compilerfehlern bitte die Online-Dokumentationen.) Ein weiteres Problem kann sein, wenn die Entwicklungsumgebungen nicht mit den neuen Bibliotheken umgehen kann. (Die beliebte Entwicklungsumgebung Eclipse hat ab der Version 3.2 mit Java 6 keine Probleme). Da Sun bei Java 6 die Grammatik der Sprache (glücklicherweise) nicht veränderte, übersetzt ein Java 5-Compiler nahezu alle Beispielprogramme des Buches; die mit neuen Funktionen aus der Java 6-Bibliothek natürlich ausgeschlossen.

Organisation der Kapitel

Das Kapitel 1, Java ist auch eine Sprache, zeigt die Besonderheiten der Sprache Java auf. Einige Vergleiche mit anderen populären objektorientierten Sprachen werden gezogen. Die Absätze sind weniger technisch und zeigen auch den historischen Ablauf bei der Entwicklung von Java. Das Kapitel ist nicht didaktisch aufgebaut, sodass einige Begriffe erst in den weiteren Kapiteln vertieft werden; Einsteiger sollten es quer lesen. Ebenso wird hier dargestellt, wie das Java JDK von Sun zu beziehen und zu installieren ist, damit die ersten Programme übersetzt und gestartet werden können.

Richtig los geht es in Kapitel 2, Sprachbeschreibung. Dort werden Variablen, Typen und die imperativen Sprachelemente hervorgehoben und die Grundlagen für jedes Programm mit Anweisungen und Ausdrücken geschaffen. Hier finden auch Fallanweisungen und Schleifen ihren Platz. Das alles geht noch ohne großartige Objektorientierung.

Objektorientiert wird es in Kapitel 3, Klassen und Objekte. Dabei kümmern wir uns erst einmal um die in der Standardbibliothek vorhandenen Klassen. Eigene Klassen werden später entworfen. Die Bibliothek ist so reichhaltig, dass allein mit den vordefinierten Klassen schon viele Programme entwickelt werden können. Speziell die bereitgestellten Datenstrukturen lassen sich vielfältig einsetzen.

Wichtig ist für viele Probleme auch Der Umgang mit Zeichenketten, der in Kapitel 4 vorgestellt wird. Die beiden notwendigen Klassen String und StringBuffer/StringBuilder werden eingeführt, und auch ein Abschnitt über reguläre Ausdrücke fehlt nicht. Bei den Zeichenketten müssen Teile ausgeschnitten, erkannt und konvertiert werden. Ein split() vom String und der Scanner zerlegen Zeichenfolgen aufgrund von Trennern in Teilzeichenketten. Format-Objekten können bringen beliebige Ausgaben in ein gewünschtes Format. Dazu gehört auch die Ausgabe von Dezimalzahlen.

Kapitel 5 stellt Mathematisches vor. Die Klasse Math hält typische mathematische Funktionen bereit, um etwa trigonometrische Berechnungen durchzuführen. Mit einer weiteren Klasse können Zufallszahlen erzeugt werden. Auch behandelt das Kapitel den Umgang mit beliebig langen Ganz- oder Fließkommazahlen.

Mit diesem Vorwissen über Objekterzeugung und Referenzen kann der nächste Schritt gemacht werden. In Kapitel 6 werden wir Eigene Klassen schreiben. Anhand von Diskotheken, Gebäuden und Kirchen modellieren wir Objekteigenschaften und zeigen Benutzt- und Vererbungsbeziehungen auf. Wichtige Konzepte wie statische Eigenschaften, Polymorphie, abstrakte Klassen und Schnittstellen (Interfaces) sowie Sichtbarkeit finden dort ihren Platz. Da Klassen in Java auch innerhalb von anderen Klassen liegen können (innere Klassen), setzt sich ein eigenes Unterkapitel damit auseinander.

Danach sind die Grundmauern gelegt, und die verbleibenden Kapitel dienen dem Ausbau des bereits erworbenen Wissens.

Dieses wird in Kapitel 7, Exceptions, weiter vertieft. Ausnahmen bilden ein wichtiges Rückgrat in Programmen, da sich Fehler kaum vermeiden lassen. Da ist es besser, die Behandlung aktiv zu unterstützen und den Programmierer zu zwingen, sich um Fehler zu kümmern und diese zu behandeln. Sie lernen, wie Sie eigene Ausnahmen programmieren können.

Kapitel 8, Die Funktionsbibliothek, gibt eine Paketübersicht der etwa 3800 Klassen, Schnittstellen und Annotationen umfassende Klassenbibliothek. Es stellt wichtige Klassen etwa zur Konfiguration von Anwendungen, zum Konvertieren von Datentypen oder zum Ausführen externer Programme vor.

Kapitel 9 beschäftigt sich mit Threads und nebenläufiger Programmierung. Dabei umfasst das Kapitel auch die Koordination mehrerer kooperierender oder konkurrierender Threads.

Der Rest des Buches vertieft ausgewählte Bereiche. Hier kann der Leser den sequenziellen Pfad verlassen und sich einzelnen Themen widmen. Das beginnt in Kapitel 10 mit Raum und Zeit. Zeitzonen und unterschiedliche Ausgabeformate für Datumswerte werden eingeführt. Darunter fallen auch Datumsberechnungen auf der Grundlage des gregorianischen Kalenders.

Kapitel 11 beschäftigt sich mit den Datenstrukturen und Algorithmen, die die Standardbibliothek anbietet. Die wichtigsten Klassen wie Vektoren, Stapel, Bitmengen und Assoziativspeicher werden vorgestellt, und dann werden unterschiedliche Aufgaben mit den jeweils passenden Datenstrukturen gelöst. Als Algorithmen kommen beispielsweise vorgefertigte Sortier-verfahren zum Einsatz.

In Kapitel 12, Datenströme und Dateien, wird der Fokus auf die Ein-/Ausgabe gelenkt. Zuerst wird gezeigt, wie sich Attribute von Dateien und Verzeichnissen auslesen lassen, und dann, wie sich wahlfreier Zugriff auf eine Datei realisieren lässt. Anschließend folgt der zweite Teil über Datenströme, ein wichtiges Konzept, das auch bei Datenströmen aus Netzwerken, Datenbanken oder Schnittstellen wichtig ist. Die Datenströme können dabei durch Filter geschickt werden. Davon werden einige vorgestellt, die sich zum Beispiel die Zeilennummer merken, einen Datenstrom puffern oder ihn komprimieren. Eine elegante Möglichkeit ist das Serialisieren von Objekten. Dabei wird der Zustand eines Objekts ausgelesen und so in einen Datenstrom geschrieben, dass das Objekt später wiederhergestellt werden kann. Eine eigene Speicherroutine kann so entfallen.

Ein neues Thema spannt Kapitel 13 mit Die eXtensible Markup Language (XML) auf. Java als plattformunabhängige Programmiersprache und XML als dokumentenunabhängige Beschreibungssprache sind ein ideales Paar, und die Kombination dieser beiden Technologien ist der Renner der letzten Jahre.

Kapitel 14 beschäftigt sich mit Grafischen Oberflächen mit Swing. Es stellt die Swing-Komponenten zur Interaktion vor, wie zum Beispiel Schaltflächen, geht auf die Behandlung von Ereignissen ein, die aus Benutzeraktionen resultieren, und beschreibt Container, die andere Komponenten aufnehmen und layouten.

Das anschließende Kapitel 15 deckt die zweite Aufgabe der grafischen Oberflächen ab, in dem es auf die Grafikprogrammierung mit dem AWT eingeht. Das AWT (Abstract Window Toolkit) ist die Java-Möglichkeit, grafische Oberflächen zu gestalten. Dabei gliedert es sich in zwei große Teile: zum einen in die direkte Ausgabe von Grafik-Primitiven wie Linien und zum anderen in Komponenten für grafische Oberflächen. Das Kapitel behandelt die Themen Fenster, Zeichenketten und Zeichensätze, Farben und Bilder.

In Kapitel 16 geht es mit Netzwerkprogrammierung weiter. Wir sehen, wie Daten von Webservern bezogen werden können, und wie eine eigene Client-Server-Kommunikation aufgebaut wird. Bei Webservern werden wir CGI-Programme ansprechen, um an gewünschte Inhalte zu kommen. Außer auf die gesicherte Verbindung TCP gehen wir auch auf ungesicherte UDP-Verbindungen ein.

Mit dem Kapitel 17, JavaServer Pages und Servlets, geht es dann in die Welt der dynamischen Webseiten. Java ist zurzeit auf der Serverseite sehr populär, und dort besonders beim so genannten Enterprise-Computing. Mit JavaServer Pages ist es besonders einfach, dynamische Webinhalte zu formulieren, da auf die mitgeschickten Informationen vom Client sehr einfach zugegriffen werden kann. JSPs verfügen zudem über die gesamten Java-Möglichkeiten, insbesondere die Datenbankanbindung.

In Kapitel 18 zeigen wir auf, wie ein Java-Programm einfach Objekte und Methoden nutzen kann, die auf einem anderen Rechner gespeichert beziehungsweise ausgeführt werden. Solche Programme nutzen die Verteilte Programmierung mit RMI. Dabei wird der Aufruf einer Methode über das Netzwerk übertragen, und für das aufrufende Programm sieht es so aus, als ob es sich um einen normalen Funktionsaufruf für ein lokales Objekt handelt.

Das Wissen über die grafischen Oberflächen und Netzwerke wird in Kapitel 19 beim Thema Applets verbunden. Das sind Java-Programme, die innerhalb eines Webbrowsers leben. Die Bedeutung von Applets nimmt außerhalb von Firmennetzen (Intranets) immer mehr ab, sodass das Kapitel nicht umfangreich sein muss.

Das Thema Datenbankmanagement mit JDBC ist Inhalt von Kapitel 20. An einem Beispiel zeige ich, wie sich eine Verbindung zu einer Datenbank aufbauen lässt, um dort SQL-Anweisungen abzusetzen, die im nächsten Schritt abgeholt werden. Als freie quelloffene Beispieldatenbank wird HSQLDB vorgestellt.

Mit Kapitel 21 widmen wir uns einer Java-typischen Technik: Reflection und Annotationen. Java-Klassen liegen selbst wieder als Meta-Objekte, als Exemplare der speziellen Klasse Class, vor. Diese Class-Objekte geben Auskunft über die verfügbaren und definierten Variablen, Methoden und Konstruktoren. So lassen sich beispielsweise dynamisch bestimmte Methoden aufrufen oder die Werte von dynamisch ausgewählten Objektvariablen abfragen. Die Annotationen sind eine bedeutendsten Neuerung in Java 5.

Die wiederverwendbaren Softwarebausteine in Kapitel 22, Komponenten durch Bohnen, heißen JavaBeans. Das sind Komponenten, die vor ihrer Benutzung durch ein spezielles Programm visuell editiert und verknüpft werden. Die Beans definieren Eigenschaften (Properties), die über Methodenaufrufe abgefragt und eingestellt werden.

Wie Java-Programme zu Testzwecken überwacht werden können, zeigt Kapitel 23, Logging und Monitoring. Mit der JMX-API lassen sich MBeans an einem MBean-Server anmelden, und das Dienstprogramm jconsole ermöglicht den Zugriff auf und die Steuerung der Komponenten.

Java kann nicht alles plattformunabhängig lösen. An einer bestimmen Stelle muss plattformabhängiger Programmcode eingebaut werden. Um von Java auf Nicht-Java-Code wie C(++) zuzugreifen, definiert Sun das Java Native Interface (JNI), was das Kapitel 24 vorstellt.

Kapitel 25 zeigt kurz Sicherheitskonzepte, etwa das Sandkasten-Prinzip, und Sicherheitsmanager auf, zeigt aber auch, wie von Daten eine Prüfsumme gebildet werden kann und wie Daten mit DES oder RSA verschlüsselt werden.

In Kapitel 26, Dienstprogramme für die Java-Umgebung, geht es um die zum JDK gehörigen Programme und einige Extratools, die für Ihre Arbeit nützlich sind. Im Mittelpunkt stehen Compiler, Interpreter und die Handhabung von Jar-Archiven. Dieses Archivformat ist vergleichbar mit den bekannten Zip-Archiven und fasst mehrere Dateien zusammen. Mit den eingebetteten Dokumentationskommentaren in Java kann aus einer Quellcodedatei ganz einfach eine komplette HTML-Dokumentation der Klassen, Schnittstellen, Vererbungsbeziehungen und Eigenschaften inklusive Verlinkung erstellt werden. Unter den Programmen, die zu keiner Standardinstallation gehören, sind etwa Tools, die Java-Programme in C-Programme übersetzen, sie verschönern und Bytecode wieder in lesbaren Java-Quellcode umwandeln.

Jeweils am Ende eines Kapitels findet sich ein Unterkapitel »Zum Weiterlesen« mit Verweisen auf interessante Internet-Adressen – in der Java-Sprache finally{} genannt.

Das Buch in der Lehre einsetzen

Die Insel eignet sich ideal zum Selbststudium. Das erste Kapitel dient zum Warmwerden und plaudert ein wenig über dies und das. Wer auf dem Rechner noch keine Entwicklungsumgebung installiert hat, sollte zuerst das SDK von Sun installieren. Es ist auf der DVD oder unter http://java.sun.com/javase/ abgelegt.

Zum Entwickeln von Software ist die Hilfe unerlässlich. Da sie über 50 Megabyte groß ist, ist sie nicht Teil einer Standard-Installation. Sie kann online unter http://java-tutor.com/go/javaapi/ eingesehen werden, oder als Zip-Datei extra bezogen und lokal ausgepackt werden. Das komprimierte Archiv ist auf der DVD oder unter http://java.sun.com/docs/ erhältlich. Ausgepackt ist die API-Dokumentation eine Sammlung von HTML-Dateien. Unter http://java.sun.com/docs/windows_format.html findet sich die Hilfe auch im HTMLHelp- und WinHelp-Format. Diese Microsoft-Formate machen die Suche in der Dokumentation einfacher.

Da das JDK nur Kommandozeilentools installiert, sollte jeder Entwickler eine grafische IDE (Integrated Development Environment) installieren, da dies die Entwicklung von Java-Programmen deutlich komfortabler macht. Eine IDE bietet gegenüber der rohen Kommandozeile einige Vorteile:

  • Editieren, Compilieren und Laufenlassen eines Java-Programms soll schnell und einfach über einen Tastendruck oder Mausklick möglich sein.
  • Die Syntax von Java sollte ein Editor farblich hervorgehoben (Syntax-Highlighting).
  • Eine kontextsensitive Hilfe zeigt bei Methoden die Parameter an, gleichzeitig verweist sie auf die API-Dokumentation.

Weitere Vorteile wie GUI-Builder, Projektmanagement und Debuggen sollen jetzt keine Rolle spielen. Wer neu in die Programmiersprache Java einsteigt, wird mit Eclipse seine Freude haben. Es wird im ersten Kapitel ebenfalls beschrieben.

Richtig los geht es in Kapitel 2, und ab dort geht es didaktisch Schritt für Schritt weiter. Wer neu in Java unterwegs ist, wird von Kapitel 2 am meisten profitieren. Wer Kenntnisse in C hat, kann gleich in Kapitel 3 einsteigen. Wer schon in C++ objektorientiert programmiert hat, kann Kapitel 3 überfliegen und dann einsteigen.

Mit diesem Buch und einer Entwicklungsumgebung Ihres Vertrauens können Sie die ersten Programme entwickeln. Um eine neue Programmiersprache zu lernen, reicht das Lesen aber nicht aus. Mit den Übungsaufgaben auf der DVD können Sie Ihre Fingerfertigkeit trainieren. Da Lösungen beigelegt sind, lassen sich die eigenen Lösungen gut mit den Musterlösungen vergleichen. Vielleicht bietet die Buchlösung noch eine interessante Lösungsidee oder Alternative an.

Lernstrategien

Wer das Buch im Selbststudium nutzt, wird wissen wollen, wie man ein Buch erfolgreich liest. Der Schlüssel für die Erkenntnis ist wie immer die Psychologie, die untersucht, unter welchen Lesebedingungen ein Text optimal verstanden werden kann. Die Methode, die ich vorstellen möchte, heißt PQ4R-Methode, benannt nach den Anfangsbuchstaben der Schritte, die die Methode vorgibt:

  • Vorschau (Preview): Zunächst sollten Sie sich über das Kapitel einen ersten Überblick verschaffen, etwa durch Blättern im Inhaltsverzeichnis und in den Seiten der einzelnen Kapitel. Abbildungen und Tabellen sollen etwas länger angeschaut werden, da sie schon den Inhalt verraten und Lust auf den Text vermitteln.
  • Fragen (Question): Jedes Kapitel versucht einen thematischen Block zu vermitteln. Vor dem Lesen sollte man sich überlegen, welche Fragen das Kapitel beantworten soll.
  • Lesen (Read): Jetzt geht's los: Der Text wird durchgelesen. Wenn es nicht gerade ein geliehenes Bücherei-Buch ist, sollte man Passagen, die einem wichtig erscheinen, mit vielen Farben hervorheben und mit Randbemerkungen versehen. Das Gleiche gilt für neue Begriffe. Die vorher gestellten Fragen sollte man beantworten können. Wenn neue Fragen auftauchen: Im Gedächtnis abspeichern!
  • Nachdenken (Reflect): Egal, ob motiviert oder nicht – das ist ein interessantes Ergebnis einer anderen Studie –, lernen kann man immer. Der Erfolg hängt nur davon ab, wie tief das Wissen verarbeitet wird (elaborierte Verarbeitung). Dazu müssen die Themen mit anderen Themen verknüpft werden. Überlegen Sie, wie die Aussagen mit den anderen Teilen zusammenpassen. Das ist auch ein guter Zeitpunkt für praktische Übungen. Für die angegebenen Beispiele im Buch sollten Sie sich eigene Beispiele überlegen. Wenn der Autor eine if-Anfrage mit dem Alter beschreibt, wäre eine Idee etwa eine if-Anfrage mit der Hüpfballgröße.
  • Wiedergeben (Recite): Die zuvor gestellten Fragen sollten sich nun beantworten lassen – und zwar ohne den Text. Für mich ist das Schreiben eine gute Möglichkeit, um über mein Wissen zu reflektieren, doch sollte dies jeder auf seine Weise tun. Allemal ist es lustig, sich während des Duschens alle Schlüsselwörter und ihre Bedeutung, den Zusammenhang zwischen abstrakten Klassen und Schnittstellen usw. klarzumachen. Ein Tipp: Lautes Erklären hilft bei vielen Arten der Problemlösung – quatschen Sie einfach mal den Toaster zu. Noch schöner ist es, mit jemandem zusammen zu lernen und sich gegenseitig die Verfahren zu erklären. Eine interessante Visualisierungstechnik ist die Mind-Map. Sie dient dazu, den Inhalt zu gliedern.
  • Rückblick (Review): Noch einmal geht man das Kapitel durch und schaut, ob man alles ohne weitere Fragen verstanden hat. Es hilft nichts, sich vorher etwas erklärt zu haben, was falsch ist. Vielleicht klärt der Text auch nicht alles, und Dinge sind unsauber erklärt worden. Dann ist ein Hinweis an mich (Insel@java-tutor.com) angebracht.

Konventionen

In diesem Buch werden folgende Konventionen verwendet: Listings und Methoden sind in nicht-proportionaler Schrift gesetzt. Bei Methodennamen folgt immer ein Klammerpaar. Die Parameter sind nicht immer aufgeführt. Neu eingeführte Begriffe sind kursiv gesetzt, und der Index verweist genau auf diese Stelle. Des Weiteren sind Dateinamen, HTTP-Adressen, Namen ausführbarer Programme, Programmoptionen und Dateiendungen (.txt) kursiv. Einige Links führen nicht direkt zur Ressource, sondern werden über http://java-tutor.com/go zur tatsächlichen Quelle umgeleitet, was Änderungen erleichtert.

Komplette Programmlistings sind wie folgt aufgebaut:

Listing 0.1    Javaprogrammname.java

class Trallala 
..

Der Quellcode gehört zur Datei Javaprogrammname.java. Der Dateiname weicht nur vom Klassennamen ab, wenn sich noch weitere Klassendefinitionen innerhalb einer Datei befinden. Um nicht den kompletten Quellcode abzudrucken, zeigt das Tutorial zum Teil nur Ausschnitte, und das komplette Programm ist auf der DVD beziehungsweise im Internet zu finden. Im folgenden Fall wird nur die main()-Funktion des Programms abgebildet:

Listing 0.2    Javaprogrammname.java, main()

Befindet sich der Typ in einem Paket, steht die Angabe beim Dateinamen

Listing 0.3    com/javatutor/insel/stax/XMLStreamReaderDemo.java, Ausschnitt

Attribute, Konstruktoren und Methoden finden sich in einer speziellen Auflistung, die es ermöglicht, sie leicht im Buch zu finden und die Insel als Referenzwerk zu nutzen.


abstract class java.text.DateFormat

extends Format

implements Cloneable, Serializable


  • Date parse( String ) throws ParseException Parst einen Datum- oder einen Zeit-String.

Im Rechteck steht der voll qualifizierte Klassen-, oder Schnittstellenname (etwa die Klasse DateFormat im Paket java.text) beziehungsweise der Name der Annotation. In den nachfolgenden Zeilen sind die Oberklasse (DateFormat erbt von Format) und die implementierten Schnittstellen (DateFormat implementiert Cloneable und Serializable) aufgeführt. Da jede Klasse, die keine explizite Oberklasse hat, automatisch von Object erbt, ist diese nicht extra angegeben. Die Sichtbarkeit ist, wenn nicht anders angegeben, public, da dies für Bibliotheksfunktionen üblich ist. Wird eine Schnittstelle beschrieben, sind die Methoden automatisch abstrakt und öffentlich, und die Schlüsselwörter abstract und public werden nicht zusätzlich angegeben. In der anschließenden Aufzählung folgen Konstruktoren, Methoden und Attribute. Wenn nicht anders angegeben, ist die Sichtbarkeit public.

Ausführbare Programme auf der Kommandozeile sind durch ein allgemeines Dollarzeichen am Anfang zu erkennen (auch wenn andere Betriebssysteme und Kommandozeilen ein anderes Prompt anzeigen). Die vom Anwender einzugebenden Zeichen sind fett gesetzt, die Ausgabe nicht:

$ java ErstesGlueck 
Hart arbeiten hat noch nie jemand getötet. Aber warum das Risko auf sich nehmen?

Warum es noch ein Java-Buch gibt ...

Die ursprüngliche Beschäftigung mit Java hängt eng mit einer universitären Pflichtveranstaltung zusammen: meiner Projektgruppe zur objektorientierten Dialogspezifikation um das Jahr 1997. Da ich die Teilnehmer davon überzeugen wollte, Java als Programmiersprache einzusetzen (und nicht Objective-C oder C(++)), arbeitete ich meinen ersten Foliensatz für den Seminarvortrag aus. Als ich dann noch die Seminararbeit schreiben musste, wurde aus den geplanten Seminarseiten schon ein kleines Buch. Es kam sogar dazu, dass die so genannte »Seminararbeit« schon sehr viele Seiten umfasste und nachher die jetzige Einleitung mehr oder weniger zur Seminararbeit verwurstet wurde; zumal das Tutorial zwischendurch immer dicker geworden ist.

Dass es mich über die universitäre Pflicht hinaus zum Schreiben treibt, ist nur eine Lernstrategie. Wenn ich mich in neue Gebiete einarbeite, lese ich erst einmal auf Masse und beginne dann, Zusammenfassungen zu schreiben. Erst beim Schreiben wird mir richtig bewusst, was ich noch nicht weiß. Das Lernen durch Schreiben hat mir auch bei einem anderen Buch sehr geholfen, das leider nicht veröffentlicht wurde. Es ist ein Assembler-Buch für den MC680x0 im Amiga. Doch die Verlage konnten mir nur sagen, dass die Zeit des Amiga vorbei sei. [Damit habe ich eine Wette mit Georg und Thomas verloren – sie durften bei einer großen Imbisskette so viel essen wie sie wollten. Ich hatte später den Spaß, als wir mit dem Auto nach Hause fuhren und dreimal an der Straße anhalten mussten. ] Die Prognosen für Java stehen besser, denn der Einsatz von Java ist mittlerweile so gefestigt wie COBOL bei Banken und Versicherungen.

Online-Informationen und Aufgaben

Das Buch ist in der aktuellen Version im Internet unter der Adresse http://www.galileocomputing.de/ erhältlich. Auf der Webseite erfahren Sie Neuigkeiten und Änderungen.

Der Quellcode der Beispielprogramme ist in fast allen Fällen entweder komplett oder mit den bedeutenden Ausschnitten im Buch abgebildet. Ein Zip-Archiv mit allen Beispielen ist auf der DVD und zusätzlich auf der Buch-Webseite http://www.java-tutor.com/javabuch/ erhältlich. Alle Programmteile sind frei von Rechten und können ungefragt in eigene Programme übernommen werden.

Wer eine Programmiersprache erlernen möchte, der muss sie wie eine Fremdsprache sprechen. Begleitend gibt es eine Aufgabensammlung auf der DVD und viele Musterlösungen auf folgender Webseite:

http://java-tutor.com/aufgaben/j/

Die Seite wird in regelmäßigen Abständen aktualisiert, sodass Sie dort immer wieder neue Aufgaben und Lösungen finden.

Weiterbildung durch den Java-Tutor

Unternehmen, die zur effektiven Weiterbildung ihrer Mitarbeiter Java-Schulungen wünschen, sollten einen Blick auf http://www.java-tutor.com/seminare/ werfen. Ich biete Java-Seminare unter anderem in folgenden Themen:

  • Java-Einführung und Java für Fortgeschrittene
  • Entwicklung mit Eclipse
  • Nebenläufiges Programmieren mit Threads
  • JavaSever Pages (JSP) und Servlets, Web-Technologien
  • Datenbankanbindung mit JDBC und OR-Mapping mit Hibernate
  • Swing und JFC
  • Java XML
  • Mobile Endgeräte mit Java ME programmieren
  • J2EE 1.4 (EJB 2.1) und Java EE 5 (EJB 3)

Danksagungen

Ich hätte gern einem großen Softwarehaus meinen Dank ausgesprochen, doch leider gibt es keinen Grund dafür. Mit einer Textverarbeitung ist es wie mit Menschen – irgendwie hat doch jeder noch mal eine zweite Chance, auch eine Textverarbeitung. Klappt irgendetwas nicht, nun gut, vielleicht geht es auf einem anderen Weg. Auch meiner Ex-Pommes-Bude nebenan habe ich schon viele Chancen gegeben – aber umsonst. Die Pommes blieben weich und pampig. Die Konsequenz: Ich gehe nicht mehr hin.

Genauso ist es mit Microsoft Word oder Adobe FrameMaker. Einst war ich von FrameMaker so begeistert, doch das hielt nur einen Monat. Die Texterfassung ist umständlich, und so ging ich zu Word 7 über. Damals waren es schon etwa vierzig Seiten mit Vorlagen. Das Konvertieren ging schnell in drei Tagen über die Bühne. Als ich dann – aus Gründen, die mir heute nicht mehr bekannt sind [Versionsfanatismus? ] , – zu Word 8 überging, ging das Konvertieren schon wieder los. Ich war geblendet von den Funktionen und Spielereien.

Die Ernüchterung kam zwei Monate später. Mein Dokument war auf die Größe von 100 Seiten angeschwollen, und Filialdokumente ergaben Sinn. Doch plötzlich fehlte eine Datei, andere waren defekt, und Word wollte einfach nicht ohne Fehlermeldung die Filialdokumente laden. [Aus einem Online-Magazin vom 13. Mai 2002: »A senior Microsoft Corp. executive told a federal court last week that sharing information with competitors could damage national security and even threaten the U. S. war effort in Afghanistan. He later acknowledged that some Microsoft code was so flawed it could not be safely disclosed.« ] Sie waren aus unerfindlichen Gründen als fehlerhaft markiert. Auch die Anweisung, alles zu kopieren und in ein neues Dokument zu packen, machte sie nicht wieder einsatzbereit. Dagegen ist das plötzliche Weißwerden des gesamten Texts unter Word 7 [Microsoft hat in den Entwicklungslabors immense Sicherheitsprobleme. Immer wieder verschwinden Vorversionen von Programmen samt Sicherheitskopien. Dies führt dazu, dass Microsoft unfertige Programmversionen ausliefern und Versionsnummern überspringen musste. Wer über den Aufenthalt von MS Project 2.0, Works 1.0 für Windows, MS DOS 6.1, Excel 1.0, Word 3.0/4.0/5.0 für Windows, Windows NT 1.0/2.0/3.0 Aussagen machen kann, sollte sich bitte an eine Microsoft-Niederlassung wenden. ] noch harmlos. Als Word anschließend noch anfing, meine Absatzvorlagen heiter durcheinander zu bringen und auch nach dem Ändern und Speichern immer noch die gleichen Effekte zeigte, war es so weit: Word 8 musste weg. Also wieder zurück zu Word 7? Ja! Also RTF, Absatzvorlagen wieder umdefinieren, altes Filialdokument wieder einsetzen. Die Zeit, die ich für Umformatierungen und Konvertierungen verliere, ist weg, und das Einzige, was ich gelernt habe, ist: »Sei vorsichtig bei einem MS-Produkt!« Aber erzähle ich damit jemandem etwas Neues?

Nun, ich darf es eigentlich gar nicht erwähnen: Der Verlag setzt das Buch in FrameMaker. Was sonst? [Ja, okay, TeX ist auch eine Lösung. ] Das Programm eignet sich zwar nicht zur Texterfassung, doch ist der Satz sehr gut, die Darstellung von Bild und Text sind überzeugend schnell und für einen möglichen späteren Druck sehr entgegenkommend. Dort lassen sich auch tausend Seiten mit Bildern und Tabellen ohne Seitenneuberechnung schnell scrollen. So sollte das immer sein. Mich beeindruckt in diesem Zusammenhang immer eine Textverarbeitung auf dem Acorn Archimedes – und zwar Impression von Computer Concepts. Sie stellt den Text beim Verschieben eines Bildes mit automatischer Neuberechnung des Textflusses pixelgenau dar. Warum habe ich das in einer PC-Textverarbeitung noch nicht gesehen? Nun denn … Von der Verlagsseite bekomme ich wieder RTF-Dateien aus FrameMaker exportiert, bearbeite sie und gebe sie dann wieder ab. Für die Texterfassung und Korrektur setze ich Word ein – mit roten Kringeln und neuer Rechtschreibung. Ein Glück, dass ich mich nicht mehr um die Umsetzung von RTF nach FrameMaker kümmern muss.

Echte Danksagungen

Die professionellen, aufheiternden Comics stammen von Andreas Schultze (Akws@aol.com). Ich danke auch den vielen Buch- und Artikelautoren für ihre interessanten Werke, aus denen ich mein Wissen über Java schöpfen konnte. Ich danke meinen Eltern für ihre Liebe und Geduld und meinen Freunden/Freundinnen für ihr Vertrauen. Ein weiteres Dankeschön geht an verschiedene treue Leser, deren Namen aufzulisten viel Platz kosten würde; ihnen ist die Webseite http://www.java-tutor.com/javabuch/korrekteure.htm gewidmet.

Abschließend möchte ich dem Galileo-Verlag meinen Dank für die Realisierung und die unproblematische Zusammenarbeit aussprechen. Für die Zusammenarbeit mit meiner Lektorin Judith bin ich sehr dankbar.

Feedback

Auch wenn wir die Kapitel noch so sorgfältig durchgegangen sind, ist es nicht auszuschließen, dass es noch Unstimmigkeiten [Bei mir wird gerne ein »wir« zum »wie« – wie dumm, dass die Tasten so eng beieinander liegen. ] gibt. Wer Anmerkungen, Hinweise, Korrekturen oder Fragen zu bestimmten Punkten hat, sollte sich nicht scheuen, mir eine E-Mail unter der Adresse Insel@Java-Tutor.com zu senden. Ich bin für Anregung und Kritik stets dankbar.

Und jetzt wünsche ich Ihnen viel Spaß beim Lesen und Lernen von Java!

Christian Ullenboom


Galileo Computing

Vorwort zur 5. Auflage  toptop

Java feiert in diesem Jahr sein zehnjähriges Jubiläum und breitet sich auf allen Feldern weiter aus. Im Server-Bereich ist Java stark vertreten, Spiele sind in Java programmierbar, fast jedes Mobiltelefon kann Midlets laden, und J/XFS (Java eXtensions for Financial Services) steuert Bankautomaten.

Nach fast einem Jahr Java 5 nimmt die Industrie erste Neuerungen an, und Frameworks entstehen, die nicht abwärtskompatibel sind; Web-Services oder Enterprise JavaBeans 3 machen Gebrauch von Annotationen, die in älteren Versionen von Java nicht verfügbar sind. Java geht eindeutig in die Richtung der Vereinfachung, was mit dem schönen Begriff EoD (Ease of Development) belegt ist.

Für diese Auflage wurde wieder viel verbessert und erweitert. Ein besonderer Dank geht dabei an Dirk Försterling. In den meisten IO-Beispielen ist eine korrekte Fehlerbehandlung implementiert – das close() ist im finally-Block –, was vorher aus Gründen kürzerer Beispiele eingespart wurde. Den Java 5-Eigenschaften wurde mehr Raum eingeräumt, so auch den Annotationen. Präzisiert wurden Aussagen zum Klassenlader, zum Modulo/Restwertoperator, zur Motivierung von OOP. Beim Zusammenhang hashCode()/equals() hat sich ein falsches Folgerungszeichen eingeschlichen. Die Schnittstelle ZipConstants, die ZipFile und ZipEntry implementiert, gibt es in Java 5 nicht mehr. StringBuffer und StringBuilder sind nun symmetrisch beschrieben, der Scanner hat ein größeres Gewicht und wird in mehreren Beispielen verwendet. Einen großen Umbau erfuhr das Thread-Kapitel. Ein Grund ist, dass Klassen aus dem Paket java.util.concurrent Schritt für Schritt die bisherigen Techniken zur Synchronisation und Benachrichtigung ersetzen; die schon seit Java 1.0 gültigen Mechanismen mit dem Schlüsselwort synchronized und den Methoden wait()/notify() wurden auch beschrieben. Zusätzlich haben ThreadLocal/InheritableThreadLocal und UncaughtExceptionHandler ihren Platz gefunden. Die Priorität der Thread-Gruppen wurde korrigiert. Weitere Neuerungen in Kürze: ProcessBuilder, UTF-Kodierung und ein neues Kapitel zu JMX beziehungsweise der Management-API.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.





 <<   zurück



Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de